package com.cy.pj.sys.web.controller;

import com.cy.pj.common.pojo.JsonResult;
import com.cy.pj.sys.pojo.SysMenu;
import com.cy.pj.sys.service.SysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 创建SysMenuController类型，通过此对象处理客户端请求
 * 1》处理什么请求
 * 1.Get
 * 1.1.url:/menu/
 * 1.2.url:/menu/{id}
 * 2.Post
 * 2.1.url:/menu/
 * 3.Put
 * 3.1.url:/menu/
 * 4.Delete
 * 2》参数处理
 * 1.@RequestBody(/menu/{id})
 * 2.@PathVariable({id:10,a:"",...})
 * 3.@RequestParam("/?id=10&...")
 * 3》响应什么数据
 * 4》异常数据如何处理
 * Controller方法内部（局部异常处理，try）
 * Controller类内部（Controller类内部定义专门的异常处理方法，@ExceptionHandler）
 * Controller类的外部定义全局异常处理（@RestControllerAdvice）
 * 5》冲高至Controller方法的调用（）（HandlerInterceptor）
 */
@RequestMapping("/menu/")
@RestController//@ResponseBody+@Controller
public class SysMenuController {
    @Autowired
    private SysMenuService sysMenuService;

    @GetMapping
    public JsonResult doFindMenus(){
        return new JsonResult(
            sysMenuService.findMenus()
        );
    }
    @GetMapping("treeNodes")
    public JsonResult doFindMenuTreeNodes(){
        return new JsonResult(sysMenuService.findMenuTreeNodes());
    }
    @GetMapping("{id}")
    public JsonResult doFindById(@PathVariable Integer id){
        return new JsonResult(sysMenuService.findById(id));
    }
    @PostMapping
    public JsonResult doSaveMenu(@RequestBody SysMenu menu){
        if(sysMenuService.saveMenu(menu)==0)
            return new JsonResult("保存失败");
        return new JsonResult("save ok");
    }
    @PutMapping
    public JsonResult doUpdateMenu(@RequestBody  SysMenu menu){
        sysMenuService.updateMenu(menu);
        return new JsonResult("update ok");
    }
}
